<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>ALGOL 68-R</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/ALGOL_68-R"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-ALGOL_68-R rootpage-ALGOL_68-R skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">ALGOL 68-R</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<style data-mw-deduplicate="TemplateStyles:r1295905060">
/* start https://en.wikipedia.org/ */
.mw-parser-output .infobox-subbox{padding:0;border:none;margin:-3px;width:auto;min-width:100%;font-size:100%;clear:none;float:none;background-color:transparent}.mw-parser-output .infobox-3cols-child{margin:auto}.mw-parser-output .infobox .navbar{font-size:100%}@media screen{html.skin-theme-clientpref-night .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media(min-width:640px){body.skin--responsive .mw-parser-output .infobox-table{display:table!important}body.skin--responsive .mw-parser-output .infobox-table>caption{display:table-caption!important}body.skin--responsive .mw-parser-output .infobox-table>tbody{display:table-row-group}body.skin--responsive .mw-parser-output .infobox-table th,body.skin--responsive .mw-parser-output .infobox-table td{padding-left:inherit;padding-right:inherit}}
/* end https://en.wikipedia.org/ */
</style><table class="infobox vevent"><tbody><tr><th colspan="2" class="infobox-above summary">ALGOL 68R</th></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Programmer" title="Programmer">Original author(s)</a></th><td class="infobox-data">I. F. Currie, <a href="Susan_G._Bond" title="Susan G. Bond">Susan G. Bond</a>, J. D. Morrison</td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Programmer" title="Programmer">Developer(s)</a></th><td class="infobox-data"><a href="Royal_Radar_Establishment" title="Royal Radar Establishment">Royal Radar Establishment</a></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;">Initial release</th><td class="infobox-data">July 20, 1970<span style="display:none"> (<span class="bday dtstart published updated">1970-07-20</span>)</span></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;">Written in</th><td class="infobox-data"><a href="ALGOL_60" title="ALGOL 60">ALGOL 60</a> (original)<br>ALGOL 68-R (latter)</td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Operating_system" title="Operating system">Operating system</a></th><td class="infobox-data"><a href="GEORGE_(operating_system)" title="GEORGE (operating system)">George 3</a></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Computing_platform" title="Computing platform">Platform</a></th><td class="infobox-data"><a href="ICT_1900_series" title="ICT 1900 series">ICL 1907F</a></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="File_size" title="File size">Size</a></th><td class="infobox-data">34 K words</td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;">Available in</th><td class="infobox-data">English</td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Software_categories#Categorization_approaches" title="Software categories">Type</a></th><td class="infobox-data"><a href="Compiler" title="Compiler">Compiler</a>, <a href="Translator_(computing)" title="Translator (computing)">translator</a></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Software_license" title="Software license">License</a></th><td class="infobox-data"><a href="Freeware" title="Freeware">Freeware</a></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;">Website</th><td class="infobox-data"><span class="url"><a rel="nofollow" class="external text" href="http://sw.ccs.bcs.org/CCs/g3">sw<wbr>.ccs<wbr>.bcs<wbr>.org<wbr>/CCs<wbr>/g3</a></span></td></tr></tbody></table>
<p><b>ALGOL 68-R</b> was the first implementation of the Algorithmic Language <a href="ALGOL_68" title="ALGOL 68">ALGOL 68</a>.
</p><p>In December 1968, the report on the Algorithmic Language ALGOL 68 was published. On 20–24 July 1970 a working conference was arranged by the <a href="International_Federation_for_Information_Processing" title="International Federation for Information Processing">International Federation for Information Processing</a> (IFIP) to discuss the problems of implementing the language,<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> a small team from the <a href="Royal_Radar_Establishment" title="Royal Radar Establishment">Royal Radar Establishment</a> (RRE) attended to present their <a href="Compiler" title="Compiler">compiler</a>, written by I. F. Currie, <a href="Susan_G._Bond" title="Susan G. Bond">Susan G. Bond</a>,<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>
and J. D. Morrison. In the face of estimates of up to 100 man-years to implement the language, using <a href="Multi-pass_compiler" title="Multi-pass compiler">multi-pass compilers</a> with up to seven passes, they described how they had already implemented a <a href="One-pass_compiler" title="One-pass compiler">one-pass compiler</a> which was in production for engineering and scientific uses.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="The_compiler">The compiler</h2></div>
<p>The ALGOL 68-R compiler was initially written in a local dialect of <a href="ALGOL_60" title="ALGOL 60">ALGOL 60</a> with extensions for address manipulation and list processing. The parser was written using J. M. Foster's <i><a href="Syntax_(programming_languages)" title="Syntax (programming languages)">Syntax</a> Improving Device</i> (SID) <a href="Parser_generator" class="mw-redirect" title="Parser generator">parser generator</a>.
</p>
<style data-mw-deduplicate="TemplateStyles:r1023981488">
/* start https://en.wikipedia.org/ */
@media all and (max-width:720px){.mw-parser-output .rquote{width:auto!important;float:none!important}}
/* end https://en.wikipedia.org/ */
</style><div style="float: right; width: 39%;"><style data-mw-deduplicate="TemplateStyles:r1244412712">
/* start https://en.wikipedia.org/ */
.mw-parser-output .templatequote{overflow:hidden;margin:1em 0;padding:0 32px}.mw-parser-output .templatequotecite{line-height:1.5em;text-align:left;margin-top:0}@media(min-width:500px){.mw-parser-output .templatequotecite{padding-left:1.6em}}
/* end https://en.wikipedia.org/ */
</style><blockquote class="templatequote rquote"><p>About 20K of this is program, which we feel is too large.<br>
– Currie<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup></p></blockquote></div>
<p>The first version of the compiler occupied 34 K words. It was later rewritten in ALGOL 68-R,<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> taking around 36 K words to compile most programs.<sup id="cite_ref-InstallMaintain_5-0" class="reference"><a href="#cite_note-InstallMaintain-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>
</p><p>ALGOL 68-R was implemented under the <a href="GEORGE_(operating_system)" title="GEORGE (operating system)">George 3</a> operating system on an <a href="ICT_1900_series" title="ICT 1900 series">ICL 1907F</a>. The compiler was distributed at no charge by <a href="International_Computers_Limited" title="International Computers Limited">International Computers Limited</a> (ICL) on behalf of the <a href="Royal_Radar_Establishment" title="Royal Radar Establishment">Royal Radar Establishment</a> (RRE).
</p>
<div class="mw-heading mw-heading2"><h2 id="Restrictions_in_the_language_compiled">Restrictions in the language compiled</h2></div>
<div style="float: right; width: 39%;"><blockquote class="templatequote rquote"><p>It is a question of morality. We have a Bible and you are sinning!<br>
– <a href="Barry_J._Mailloux" title="Barry J. Mailloux">Mailloux</a><sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup></p></blockquote></div>
<p>To allow one pass compiling, ALGOL 68-R implemented a subset of the language defined in the original report:<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup>
</p>
<ol><li>Identifiers, modes and operators must be specified before use.</li>
<li>No automatic <i>proceduring</i></li>
<li>Explicit <b>VOID</b> mode</li>
<li>No formal declarers</li>
<li>No parallel processing</li>
<li><b>GOTO</b> may not be omitted</li>
<li>Uniting is only valid in <i>strong</i> positions</li></ol>
<p>Many of these restrictions were adopted by the revised report on ALGOL 68.
</p>
<div class="mw-heading mw-heading3"><h3 id="Specification_before_use">Specification before use</h3></div>
<p>To allow compiling in one pass ALGOL 68-R insisted that all identifiers were <i>specified</i> (declared) before use.
</p><p>The standard program:
</p>
<pre><b>PROC</b> even = (<b>INT</b> number) <b>BOOL</b>: ( number = 0 | <b>TRUE</b> | odd (<b>ABS</b> (number - 1)));
<b>PROC</b> odd = (<b>INT</b> number) <b>BOOL</b>: ( number = 0 | <b>FALSE</b> | even (<b>ABS</b> (number - 1)));
</pre>
<p>would have to be rewritten as:
</p>
<pre><b>PROC</b> (<b>INT</b>) <b>BOOL</b> odd;
<b>PROC</b> even = (<b>INT</b> number) <b>BOOL</b> : ( number = 0 | <b>TRUE</b> | odd (<b>ABS</b> (number - 1)));
odd := (<b>INT</b> number) <b>BOOL</b> : ( number = 0 | <b>FALSE</b> | even (<b>ABS</b> (number - 1)));
</pre>
<p>To allow recursive declarations of <i>modes</i> (types) a special <i>stub</i> mode declaration was used to inform the compiler that an up-coming symbol was a mode rather than an operator:
</p>
<pre><b>MODE</b> <b>B</b>;
<b>MODE</b> <b>A</b> = <b>STRUCT</b> (<b>REF</b> <b>B</b> b);
<b>MODE</b> <b>B</b> = [1:10] <b>REF</b> <b>A</b>;
</pre>
<div class="mw-heading mw-heading3"><h3 id="No_proceduring">No <i>proceduring</i></h3></div>
<p>In the standard language the <i>proceduring</i> <a href="Type_conversion" title="Type conversion">coercion</a> could, in a <i>strong</i> context, convert an expression of some type into a procedure returning that type. This could be used to implement <a href="Call_by_name" class="mw-redirect" title="Call by name">call by name</a>.
</p><p>Another case where proceduring was used was the declaration of procedures, in the declaration:
</p>
<pre><b>PROC</b> x plus 1 = <b>INT</b> : x + 1;
</pre>
<p>the right hand side was a <i><a href="Type_conversion" title="Type conversion">cast</a></i> of <b>x + 1</b> to integer, which was then converted to <i>procedure returning integer</i>.
</p><p>The ALGOL 68-R team found this too difficult to handle and made two changes to the language. The proceduring coercion was dropped, and the form <i>mode : expression</i> was redefined as a <i>procedure denotation</i>, casts being indicated by an explicit <b>VAL</b> symbol:
</p>
<pre><b>REAL</b> : x <b>CO</b> a cast to <b>REAL</b> in ALGOL 68 <b>CO</b>
<b>REAL</b> <b>VAL</b> x <b>CO</b> a cast to <b>REAL</b> in ALGOL 68-R <b>CO</b>
</pre>
<p>Code that had a valid use for call by name (for example, <a href="Jensen's_device" title="Jensen's device">Jensen's device</a>) could simply pass a procedure denotation:
</p>
<pre> <b>PROC</b> sum = (<b>INT</b> lo, hi, <b>PROC</b> (<b>INT</b>) <b>REAL</b> term) <b>REAL</b> :
<b>BEGIN</b>
<b>REAL</b> temp := 0;
<b>FOR</b> i <b>FROM</b> lo <b>TO</b> hi <b>DO</b>
temp +:= term (i);
temp
<b>END</b>;
print (sum (1, 100, (<b>INT</b> i) <b>REAL</b>: 1/i))
</pre>
<p>In the version of the language defined in the revised report these changes were accepted, although the form of the cast was slightly changed to <i>mode (expression)</i>.
</p>
<pre><b>REAL</b> (x) <b>CO</b> a cast to <b>REAL</b> in revised ALGOL 68 <b>CO</b>
</pre>
<div class="mw-heading mw-heading3"><h3 id="Explicit_void_mode">Explicit void mode</h3></div>
<p>In the original language the <b>VOID</b> mode was represented by an empty mode:
</p>
<pre>: x := 3.14; <b>CO</b> cast (x := 3.14) to void <b>CO</b>
<b>PROC</b> endit = <b>GOTO</b> end; <b>CO</b> a procedure returning void <b>CO</b>
</pre>
<p>The ALGOL 68-R team decided to use an explicit <b>VOID</b> symbol in order to simplify parsing (and increase readability):
</p>
<pre><b>VOID</b> <b>VAL</b> x := 3.14; <b>CO</b> cast (x := 3.14) to void <b>CO</b>
<b>PROC</b> endit = <b>VOID</b> : <b>GOTO</b> end; <b>CO</b> a procedure returning void <b>CO</b>
</pre>
<p>This modification to the language was adopted by the ALGOL 68 revised report.
</p>
<div class="mw-heading mw-heading3"><h3 id="No_formal_declarers">No formal declarers</h3></div>
<p><i>Formal declarers</i> are the modes on the left hand side of an identity declaration, or the modes specified in a procedure declaration. In the original language, they could include array bounds and specified whether the matching <i>actual</i> declarer was fixed, <b>FLEX</b> or <b>EITHER</b>:
</p>
<pre>[ 15 ] <b>INT</b> a; <b>CO</b> an actual declarer, bounds 1:15 <b>CO</b>
<b>REF</b> [ 3 : ] <b>INT</b> b = a; <b>CO</b> This is an error <b>CO</b>
<b>PROC</b> x = (<b>REF</b> [ 1 : <b>EITHER</b>] <b>INT</b> a) : ...
</pre>
<div style="float: right; width: 39%;"><blockquote class="templatequote rquote"><p>I think it was a reasonable thing myself to omit the bounds from the formal-declarers but I think it was a terrible crime to omit the <b>EITHER</b> or the <b>FLEX</b><br>
– <a href="Charles_H._Lindsey" title="Charles H. Lindsey">Lindsey</a><sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup></p></blockquote></div>
<p>The ALGOL 68-R team redefined formal declarers to be the same as <i>virtual declarers</i> which include no bound information. They found that this reduced the ambiguities in parsing the language and felt that it was not a feature that would be used in working programs.
</p><p>If a procedure needed certain bounds for its arguments it could check them itself with the <b>UPB</b> (upper bound) and <b>LWB</b> (lower bound) operators.
</p><p>In ALGOL 68-R the example above could be recoded like this: (the bounds of <i>a</i> in the procedure would depend on the caller).
</p>
<pre>[ 15 ] <b>INT</b> a; <b>CO</b> an actual declarer, bounds 1:15 <b>CO</b>
<b>REF</b> [] <b>INT</b> b = a [ <b>AT</b> 3]; <b>CO</b> use <i>slice</i> so b has bounds 3:17 <b>CO</b>
<b>PROC</b> x = (<b>REF</b> [] <b>INT</b> a) <b>VOID</b>: ... <b>CO</b> bounds given by caller <b>CO</b>
</pre>
<p>In the revised report on ALGOL 68 formal bounds were also removed, but the <b>FLEX</b> indication was moved in position so it could be include in formal declarers:
</p>
<pre>[ 1: <b>FLEX</b> ] <b>INT</b> a; <b>CO</b> original ALGOL 68, or ALGOL 68-R <b>CO</b>
<b>FLEX</b> [ 1: ] <b>INT</b> a; <b>CO</b> revised ALGOL 68, <b>CO</b>
</pre>
<pre><b>PROC</b> x = (<b>REF</b> [ 1: <b>FLEX</b> ] <b>INT</b> a) : ... <b>CO</b> Original ALGOL 68 <b>CO</b>
<b>PROC</b> x = (<b>REF</b> [ ] <b>INT</b> a) <b>VOID</b>: ... <b>CO</b> ALGOL 68-R <b>CO</b>
<b>PROC</b> x = (<b>REF</b> <b>FLEX</b> [ ] <b>INT</b> a) <b>VOID</b>: ... <b>CO</b> Revised ALGOL 68 <b>CO</b>
</pre>
<div class="mw-heading mw-heading3"><h3 id="No_parallel_processing">No parallel processing</h3></div>
<p>In ALGOL 68 code can be run in parallel by writing <b>PAR</b> followed by a <i>collateral clause</i>, for example in:
</p>
<pre><b>PAR</b> <b>BEGIN</b>
producer,
consumer
<b>END</b>
</pre>
<p>the procedures <i>producer</i> and <i>consumer</i> will be run in parallel. A <a href="Semaphore_(programming)" title="Semaphore (programming)">semaphore</a> type (<b>SEMA</b>) with the traditional <i>P</i> (<b>DOWN</b>) and <i>V</i> (<b>UP</b>) operators is provided for sysynchronizing between the parts of the parallel clause,
</p><p>This feature was not implemented in ALGOL 68-R.
</p><p>An extension named ALGOL 68-RT was written which used the <i>subprogramming</i> feature of the <a href="ICT_1900_series" title="ICT 1900 series">ICL 1900</a> to provide multithreading facilities to ALGOL 68-R programs with semantics similar to modern <a href="Thread_(computer_science)" class="mw-redirect" title="Thread (computer science)">thread</a> libraries.<sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup> No changes were made to the compiler, only the <a href="Runtime_(program_lifecycle_phase)" class="mw-redirect" title="Runtime (program lifecycle phase)">runtime</a> library and the linker.
</p>
<div class="mw-heading mw-heading3"><h3 id="goto_may_not_be_omitted">goto may not be omitted</h3></div>
<p>In ALGOL 68 the <b>GOTO</b> symbol could be omitted from a jump:
</p>
<pre><b>PROC</b> stop = : ...;
...
<b>BEGIN</b>
<b>IF</b> x > 3 <b>THEN</b> stop <b>FI</b>; <b>CO</b> a jump, not a call <b>CO</b>
...
stop:
<b>SKIP</b>
<b>END</b>
</pre>
<p>As ALGOL 68-R was a one pass compiler this was too difficult, so the <b>GOTO</b> symbol was made obligatory.
</p><p>The same restriction was made in the official sublanguage, <a href="ALGOL_68S" title="ALGOL 68S">ALGOL 68S</a>.<sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Uniting_is_only_allowed_in_strong_positions">Uniting is only allowed in <i>strong</i> positions</h3></div>
<p>In ALGOL 68 <i>uniting</i> is the coercion that produces a <b>UNION</b> from a constituent mode, for example:
</p>
<pre><b>MODE</b> <b>IBOOL</b> = <b>UNION</b> (<b>INT</b>, <b>BOOL</b>); <b>CO</b> an <b>IBOOL</b> is an <b>INT</b> or a <b>BOOL</b> <b>CO</b>
<b>IBOOL</b> a = <b>TRUE</b>; <b>CO</b> the <b>BOOL</b> value <b>TRUE</b> is <i>united</i> to an <b>IBOOL</b> <b>CO</b>
</pre>
<p>In standard ALGOL 68 uniting was possible in <i>firm</i> or <i>strong</i> contexts, so for example could be applied to the operands of <i>formulas</i>:
</p>
<pre> <b>OP</b> <b>ISTRUE</b> = (<b>IBOOL</b> a) <b>BOOL</b>: ...;
<b>IF</b> <b>ISTRUE</b> 1 <b>CO</b> legal because 1 (<b>INT</b>) can be united to <b>IBOOL</b> <b>CO</b>
<b>THEN</b> ...
</pre>
<p>The ALGOL 68-R implementers found this gave too many ambiguous situations so restricted the uniting coercion to <i>strong</i> contexts.
</p><p>The effects of this restriction were rarely important and, if necessary, could be worked around by using a <i>cast</i> to provide a strong context at the required point in the program.
</p>
<div class="mw-heading mw-heading2"><h2 id="F00L">F00L</h2></div>
<p>The ALGOL 68-R compiler initialised unused memory to the value -6815700.<sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup>
</p><p>This value was chosen because:
</p>
<ul><li>As an integer it was a large negative value</li>
<li>As an address it was beyond the maximum address for any practical program on an <a href="ICT_1900_series" title="ICT 1900 series">ICL 1900</a></li>
<li>As an instruction it was illegal</li>
<li>As text it displayed as <code>F00L</code></li>
<li>As a floating point number it had the overflow bit set</li></ul>
<p>The same value was used to represent <b>NIL</b>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Stropping">Stropping</h2></div>
<div style="float: right; width: 39%;"><blockquote class="templatequote rquote"><p>I notice, in some of your sample programs, that you are not underlining or stropping anything.<br>
– <a href="Barry_J._Mailloux" title="Barry J. Mailloux">Mailloux</a><sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup></p></blockquote></div>
<p>In <a href="ALGOL" title="ALGOL">ALGOL</a> family languages, it is necessary to distinguish between identifiers and basic symbols of the language. In printed texts this was usually accomplished by printing basic symbols in boldface or underlined (<b>BEGIN</b> or <u>begin</u> for example).
</p><p>In <a href="Source_code" title="Source code">source code</a> programs, some <a href="Stropping_(syntax)" title="Stropping (syntax)">stropping</a> technique had to be used. In many ALGOL like languages, before ALGOL 68-R, this was accomplished by enclosing basic symbols in single quote characters ('begin' for example). In 68-R, basic symbols could be distinguished by writing them in upper case, lower case being used for identifiers.
</p><p>As ALGOL 68-R was implemented on a machine with 6-<a href="Bit" title="Bit">bit</a> <a href="Byte" title="Byte">bytes</a> (and hence a 64 character set) this was quite complex and, at least initially, programs had to be composed on paper <a href="Punched_tape" title="Punched tape">punched tape</a> using a <a href="Friden_Flexowriter" title="Friden Flexowriter">Friden Flexowriter</a>.
</p><p>Partly based on the experience of ALGOL 68-R, the revised report on ALGOL 68 specified hardware representations for the language, including UPPER stropping.
</p>
<div class="mw-heading mw-heading2"><h2 id="Extensions_to_ALGOL_68">Extensions to ALGOL 68</h2></div>
<p>ALGOL 68-R included extensions for <a href="Library_(computing)" title="Library (computing)">separate compiling</a> and low-level access to the machine.
</p>
<div class="mw-heading mw-heading3"><h3 id="Separate_compiling">Separate compiling</h3></div>
<p>Since ALGOL 68 is a <a href="Strong_and_weak_typing" title="Strong and weak typing">strongly typed</a> language, the simple library facilities used by other languages on the ICL 1900 system were insufficient. ALGOL 68-R was delivered with its own library format and utilities which allowed sharing of modes, functions, variables, and operators between separately compiled <i>segments</i> of code which could be stored in <i>albums</i>.<sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup>
</p><p>A segment to be made available to other segments would end with a list of declarations to be made available:
</p>
<pre>graphlib <b>CO</b> the segment name <b>CO</b>
<b>BEGIN</b>
<b>MODE</b> <b>GRAPHDATA</b> = <b>STRUCT</b> ( ... );
<b>MODE</b> <b>GRAPH</b> = <b>REF</b> <b>GRAPHDATA</b>;
<b>PROC</b> new graph = ( ... ) <b>GRAPH</b> : ...;
<b>PROC</b> draw graph = (<b>GRAPH</b> g) <b>VOID</b> : ...;
...
<b>END</b>
<b>KEEP</b> <b>GRAPH</b>, new graph, draw graph
<b>FINISH</b>
</pre>
<p>And then the graph functions could be used by another segment:
</p>
<pre>myprog <b>WITH</b> graphlib <b>FROM</b> graphalbum
<b>BEGIN</b>
<b>GRAPH</b> g = new graph (...);
...
draw graph (g);
...
<b>END</b>
<b>FINISH</b>
</pre>
<div class="mw-heading mw-heading3"><h3 id="Low_level_system_access">Low level system access</h3></div>
<p>As a strongly typed high level language, ALGOL 68 prevents programs from directly accessing the low level hardware. No operators exist for address arithmetic, for example.
</p><p>Since ALGOL 68-R didn't compile to standard ICL <i>semicompiled</i> (link-ready) format, it was necessary to extend the language to provide features in ALGOL 68-R to write code that would normally be written in <a href="Assembly_language" title="Assembly language">assembly language</a>. Machine instructions could be written <a href="Inline_assembler" title="Inline assembler">inline</a>, inside <b>CODE</b> ... <b>EDOC</b> sections and the address manipulation operators <b>INC</b>, <b>DEC</b>, <b>DIF</b>, <b>AS</b> were added.<sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup>
</p><p>An example, using a <a href="GEORGE_(operating_system)" title="GEORGE (operating system)">George</a> <i>peri</i> operation to issue a command:
</p>
<pre>[1 : 120] <b>CHAR</b> buff;
<b>INT</b> unitnumber;
<b>STRUCT</b> (<b>BITS</b> typemode, reply, <b>INT</b> count, <b>REF</b> <b>CHAR</b> address)
control area := (8r47400014,0,120,buff[1]);
...;
<b>CODE</b> 0,6/unitnumber; 157,6/typemode <b>OF</b> control area <b>EDOC</b>
</pre>
<div class="mw-heading mw-heading2"><h2 id="Availability">Availability</h2></div>
<p>A copy of the ALGOL 68-R compiler, runnable under the <a href="GEORGE_(operating_system)" title="GEORGE (operating system)">George 3</a> operating system emulator, by David Holdsworth (<a href="University_of_Leeds" title="University of Leeds">University of Leeds</a>), is available, with source code, under a <a href="GNU_General_Public_License" title="GNU General Public License">GNU General Public License</a> (GPL).<sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */
.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}
/* end https://en.wikipedia.org/ */
</style><div class="reflist reflist-columns references-column-width reflist-columns-2">
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite id="CITEREFPeck1970" class="citation cs2">Peck, J.E.L., ed. (1970), <i>Proceedings of the IFIP working conference on ALGOL 68 Implementation</i>, Munich: North-Holland, <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>0-7204-2045-8</bdi></cite></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text">
<cite id="CITEREFBondAbbate2001" class="citation web cs1"><a href="Susan_G._Bond" title="Susan G. Bond">Bond, Susan</a>; Abbate, Janet (26 September 2001). <a rel="nofollow" class="external text" href="https://ethw.org/Oral-History:Susan_Bond#Developing_the_World.E2.80.99s_First_ALGOL_68_Compiler">"Oral-History: Susan Bond: Developing the World's First ALGOL 68 Compiler"</a>. <i>Engineering and Technology History Wiki (ETHW)</i>. <a href="Institute_of_Electrical_and_Electronics_Engineers" title="Institute of Electrical and Electronics Engineers">Institute of Electrical and Electronics Engineers</a> (IEEE)<span class="reference-accessdate">. Retrieved <span class="nowrap">22 April</span> 2020</span> – via United Engineering Foundation (UEF).</cite></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text">ALGOL 68 implementation, page 21</span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><cite id="CITEREFCurrieBondMorison1971" class="citation cs2">Currie, I. F.; <a href="Susan_G._Bond" title="Susan G. Bond">Bond, S. G.</a>; Morison, J. D. (1971), "ALGOL 68-R, Its Implementation and Use", <i>Proc <a href="IFIP" class="mw-redirect" title="IFIP">IFIP</a> Congress 1971 (Information Processing 1971)</i>, Ljubljana, Yugoslavia: North-Holland, pp. <span class="nowrap">360–</span>363, <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>0-7204-2063-6</bdi></cite></span>
</li>
<li id="cite_note-InstallMaintain-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-InstallMaintain_5-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFAnonymous1977" class="citation book cs1">Anonymous (January 1977). <a rel="nofollow" class="external text" href="http://www.icl1900.co.uk/techpub/algol68im.pdf"><i>Algol 68-R System – Installation and Maintenance</i></a> <span class="cs1-format">(PDF)</span>. Division of Computing and Software Research - Royal Radar Establishment<span class="reference-accessdate">. Retrieved <span class="nowrap">2011-04-09</span></span>.</cite></span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text">ALGOL 68 implementation, page 294</span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text">ALGOL 68 implementation, pages 21-26</span>
</li>
<li id="cite_note-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-8">^</a></b></span> <span class="reference-text">ALGOL 68 implementation, page 276</span>
</li>
<li id="cite_note-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-9">^</a></b></span> <span class="reference-text"><cite id="CITEREFOliverNewton1979" class="citation journal cs1">Oliver, J. R.; Newton, R.S. (1979). <a rel="nofollow" class="external text" href="https://doi.org/10.1093%2Fcomjnl%2F22.2.114">"Practical experience with ALGOL 68-RT"</a>. <i>The Computer Journal</i>. <b>22</b> (2): <span class="nowrap">114–</span>118. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://doi.org/10.1093%2Fcomjnl%2F22.2.114">10.1093/comjnl/22.2.114</a></span>.</cite></span>
</li>
<li id="cite_note-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-10">^</a></b></span> <span class="reference-text"><cite id="CITEREFLindseyvan_der_Meulen1997" class="citation book cs1"><a href="Charles_H._Lindsey" title="Charles H. Lindsey">Lindsey, Charles H.</a>; van der Meulen, S. G. (1997). "Appendix 4, the sublanguage". <i>informal introduction to ALGOL 68 (revised)</i>. north-holland. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>0-7204-0726-5</bdi>.</cite></span>
</li>
<li id="cite_note-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-11">^</a></b></span> <span class="reference-text"><cite id="CITEREFRaymond1996" class="citation book cs1"><a href="Eric_S._Raymond" title="Eric S. Raymond">Raymond, Eric S.</a> (1996). "fool". <i>The new hacker's dictionary; 3rd edition</i>. MIT Press. p. 200. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-0-262-68092-9</bdi>. <q>The Algol 68-R compiler used to initialize its storage to the character string "F00LF00LF00LF00L..." because as a pointer or as a floating point number it caused a crash, and as an integer or a character string it was very recognizable in a dump.</q></cite></span>
</li>
<li id="cite_note-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-12">^</a></b></span> <span class="reference-text">Algol 68-R System - Installation and Maintenance, page 25</span>
</li>
<li id="cite_note-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-13">^</a></b></span> <span class="reference-text">ALGOL 68 implementation, page 30</span>
</li>
<li id="cite_note-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-14">^</a></b></span> <span class="reference-text"><cite id="CITEREFWoodwardBond1974" class="citation book cs1"><a href="Philip_Woodward" title="Philip Woodward">Woodward, P. M.</a>; <a href="Susan_G._Bond" title="Susan G. Bond">Bond, S. G.</a> (1974). "14 - Program segmentation". <i>ALGOL 68-R Users Guide</i>. <a href="Office_of_Public_Sector_Information" title="Office of Public Sector Information">Her Majesty's Stationery Office</a> (HMSO). pp. <span class="nowrap">87–</span>89. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>0-11-771600-6</bdi>.</cite></span>
</li>
<li id="cite_note-15"><span class="mw-cite-backlink"><b><a href="#cite_ref-15">^</a></b></span> <span class="reference-text">Algol 68-R System - Installation and Maintenance, pp 26-30</span>
</li>
<li id="cite_note-16"><span class="mw-cite-backlink"><b><a href="#cite_ref-16">^</a></b></span> <span class="reference-text"><cite id="CITEREFToal2018" class="citation web cs1">Toal, Graham (September 2018). <a rel="nofollow" class="external text" href="http://sw.ccs.bcs.org/CCs/g3/">"George3: Emulation of the ICL 1900"</a>. <i>Software Preservation and Machine Emulation</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2020-04-19</span></span>.</cite></span>
</li>
</ol></div>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><a rel="nofollow" class="external text" href="https://mraths.org.uk/?page_id=2862">Algol 68</a> – Malvern Radar and Technology History Society</li></ul>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}
/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox" aria-labelledby="ALGOL445" style="padding:3px"><table class="nowraplinks hlist mw-collapsible mw-collapsed navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><style data-mw-deduplicate="TemplateStyles:r1239400231">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><div id="ALGOL445" style="font-size:114%;margin:0 4em"><a href="ALGOL" title="ALGOL">ALGOL</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Programming_language_implementation" title="Programming language implementation">Implementations</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Technical_standard" title="Technical standard">Technical<br>standards</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="ALGOL_58" title="ALGOL 58">ALGOL 58</a></li>
<li><a href="ALGOL_60" title="ALGOL 60">ALGOL 60</a></li>
<li><a href="ALGOL_68" title="ALGOL 68">ALGOL 68</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Dialect_(computing)" class="mw-redirect" title="Dialect (computing)">Dialects</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li>ABC ALGOL</li>
<li><a href="ALCOR" title="ALCOR">ALCOR</a></li>
<li><a href="ALGO" title="ALGO">ALGO</a></li>
<li><a href="ALGOL_68C" title="ALGOL 68C">ALGOL 68C</a></li>
<li><a href="ALGOL_68RS" title="ALGOL 68RS">ALGOL 68RS</a> (<a href="ELLA_(programming_language)" title="ELLA (programming language)">ELLA</a>)</li>
<li><a href="ALGOL_68S" title="ALGOL 68S">ALGOL 68S</a></li>
<li><a href="ALGOL_N" title="ALGOL N">ALGOL N</a></li>
<li><a href="ALGOL_W" title="ALGOL W">ALGOL W</a></li>
<li><a href="ALGOL_X" class="mw-redirect" title="ALGOL X">ALGOL X</a></li>
<li><a href="Atlas_Autocode" title="Atlas Autocode">Atlas Autocode</a> (<a href="Edinburgh_IMP" title="Edinburgh IMP">Edinburgh IMP</a>)</li>
<li><a href="Burroughs_Large_Systems#ALGOL" title="Burroughs Large Systems">Burroughs ALGOL</a></li>
<li><a href="CORAL" title="CORAL">CORAL</a> 66</li>
<li><a href="Dartmouth_ALGOL_30" class="mw-redirect" title="Dartmouth ALGOL 30">Dartmouth ALGOL 30</a></li>
<li><a href="DASK" title="DASK">DASK</a> ALGOL</li>
<li><a href="DG/L" title="DG/L">DG/L</a></li>
<li><a href="Elliott_ALGOL" title="Elliott ALGOL">Elliott ALGOL</a></li>
<li><a href="Executive_Systems_Problem_Oriented_Language" class="mw-redirect" title="Executive Systems Problem Oriented Language">Executive Systems Problem Oriented Language</a> (ESPOL) → New Executive Programming Language (<a href="NEWP" class="mw-redirect" title="NEWP">NEWP</a>)</li>
<li><a href="FLACC" title="FLACC">FLACC</a></li>
<li><a href="IMP_(programming_language)" title="IMP (programming language)">IMP</a></li>
<li><a href="JOVIAL" title="JOVIAL">JOVIAL</a></li>
<li><a href="English_Electric_KDF9" title="English Electric KDF9">Kidsgrove</a> Algol</li>
<li><a href="MAD_(programming_language)" title="MAD (programming language)">MAD</a></li>
<li><a href="Mary_(programming_language)" title="Mary (programming language)">Mary</a></li>
<li><a href="NELIAC" title="NELIAC">NELIAC</a></li>
<li><a href="RTL/2" title="RTL/2">RTL/2</a></li>
<li><a href="S-algol" title="S-algol">S-algol</a>, <a href="PS-algol" title="PS-algol">PS-algol</a>, <a href="Napier88" title="Napier88">Napier88</a></li>
<li><a href="Simula" title="Simula">Simula</a></li>
<li>Small Machine ALGOL Like Language (<a href="SMALL" title="SMALL">SMALL</a>)</li>
<li><a href="SMIL_(computer)" title="SMIL (computer)">SMIL</a> ALGOL</li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Formalism_(philosophy_of_mathematics)" title="Formalism (philosophy of mathematics)">Formalisms</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Jensen's_device" title="Jensen's device">Jensen's device</a></li>
<li><a href="Van_Wijngaarden_grammar" title="Van Wijngaarden grammar">Van Wijngaarden grammar</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Community_of_practice" title="Community of practice">Community</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%">Organizations</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Professional_association" title="Professional association">Professional<br>associations</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="ALCOR" title="ALCOR">ALCOR</a> Group</li>
<li><a href="Association_for_Computing_Machinery" title="Association for Computing Machinery">Association for Computing Machinery</a> (ACM)</li>
<li><a href="BSI_Group" title="BSI Group">BSI Group</a></li>
<li><a href="GOST" title="GOST">Euro-Asian Council for Standardization, Metrology and Certification</a> (EASC)</li>
<li><a href="International_Federation_for_Information_Processing" title="International Federation for Information Processing">International Federation for Information Processing</a> (IFIP) <a href="IFIP_Working_Group_2.1" title="IFIP Working Group 2.1">IFIP Working Group 2.1</a></li>
<li><a href="Gesellschaft_f%C3%BCr_Angewandte_Mathematik_und_Mechanik" title="Gesellschaft für Angewandte Mathematik und Mechanik">Society of Applied Mathematics and Mechanics</a> (GAMM)</li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Business</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Burroughs_Corporation" title="Burroughs Corporation">Burroughs Corporation</a></li>
<li><a href="Elliott_Brothers_(computer_company)" title="Elliott Brothers (computer company)">Elliott Brothers</a></li>
<li><a href="Regnecentralen" title="Regnecentralen">Regnecentralen</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Education</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Case_Western_Reserve_University" title="Case Western Reserve University">Case Institute of Technology</a></li>
<li><a href="University_of_Edinburgh" title="University of Edinburgh">University of Edinburgh</a></li>
<li><a href="University_of_St_Andrews" title="University of St Andrews">University of St Andrews</a></li>
<li><a href="Manchester_University" class="mw-redirect" title="Manchester University">Manchester University</a></li>
<li><a href="Massachusetts_Institute_of_Technology" title="Massachusetts Institute of Technology">Massachusetts Institute of Technology</a> (MIT)</li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Government</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Royal_Radar_Establishment" title="Royal Radar Establishment">Royal Radar Establishment</a> (RRE)</li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">People</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%"><a href="ALGOL_58" title="ALGOL 58">ALGOL 58</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><td colspan="2" class="navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="John_Backus" title="John Backus">John Backus</a></li>
<li><a href="Friedrich_L._Bauer" title="Friedrich L. Bauer">Friedrich L. Bauer</a></li>
<li><a href="Hermann_Bottenbruch" title="Hermann Bottenbruch">Hermann Bottenbruch</a></li>
<li><a href="Charles_Katz" title="Charles Katz">Charles Katz</a></li>
<li><a href="Alan_Perlis" title="Alan Perlis">Alan Perlis</a></li>
<li><a href="Heinz_Rutishauser" title="Heinz Rutishauser">Heinz Rutishauser</a></li>
<li><a href="Klaus_Samelson" title="Klaus Samelson">Klaus Samelson</a></li>
<li><a href="Joseph_Henry_Wegstein" title="Joseph Henry Wegstein">Joseph Henry Wegstein</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="MAD_(programming_language)" title="MAD (programming language)">MAD</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Bruce_Arden" title="Bruce Arden">Bruce Arden</a></li>
<li><a href="Bernard_Galler" title="Bernard Galler">Bernard Galler</a></li>
<li><a href="Robert_M._Graham_(computer_scientist)" title="Robert M. Graham (computer scientist)">Robert M. Graham</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="ALGOL_60" title="ALGOL 60">ALGOL 60</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><td colspan="2" class="navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li>Backus^</li>
<li><a href="Roland_Carl_Backhouse" title="Roland Carl Backhouse">Roland Carl Backhouse</a></li>
<li>Bauer^</li>
<li><a href="Richard_Bird_(computer_scientist)" title="Richard Bird (computer scientist)">Richard Bird</a></li>
<li><a href="Stephen_R._Bourne" title="Stephen R. Bourne">Stephen R. Bourne</a></li>
<li><a href="Edsger_W._Dijkstra" title="Edsger W. Dijkstra">Edsger W. Dijkstra</a></li>
<li><a href="Andrey_Ershov" class="mw-redirect" title="Andrey Ershov">Andrey Ershov</a></li>
<li><a href="Robert_W._Floyd" title="Robert W. Floyd">Robert W. Floyd</a></li>
<li><a href="Jeremy_Gibbons" title="Jeremy Gibbons">Jeremy Gibbons</a></li>
<li>Julien Green</li>
<li><a href="David_Gries" title="David Gries">David Gries</a></li>
<li><a href="Eric_Hehner" title="Eric Hehner">Eric Hehner</a></li>
<li><a href="Tony_Hoare" title="Tony Hoare">Tony Hoare</a></li>
<li><a href="J%C3%B8rn_Jensen" title="Jørn Jensen">Jørn Jensen</a></li>
<li>Katz^</li>
<li><a href="Peter_Landin" title="Peter Landin">Peter Landin</a></li>
<li><a href="Tom_Maibaum" title="Tom Maibaum">Tom Maibaum</a></li>
<li><a href="Conor_McBride" title="Conor McBride">Conor McBride</a></li>
<li><a href="John_McCarthy_(computer_scientist)" title="John McCarthy (computer scientist)">John McCarthy</a></li>
<li><a href="Carroll_Morgan_(computer_scientist)" title="Carroll Morgan (computer scientist)">Carroll Morgan</a></li>
<li><a href="Peter_Naur" title="Peter Naur">Peter Naur</a></li>
<li><a href="Maurice_Nivat" title="Maurice Nivat">Maurice Nivat</a></li>
<li><a href="John_E._L._Peck" title="John E. L. Peck">John E. L. Peck</a></li>
<li>Perlis^</li>
<li><a href="Brian_Randell" title="Brian Randell">Brian Randell</a></li>
<li>Rutishauser^</li>
<li>Samelson^</li>
<li><a href="Jacob_T._Schwartz" title="Jacob T. Schwartz">Jacob T. Schwartz</a></li>
<li><a href="Micha_Sharir" title="Micha Sharir">Micha Sharir</a></li>
<li><a href="David_Turner_(computer_scientist)" title="David Turner (computer scientist)">David Turner</a></li>
<li><a href="Bernard_Vauquois" title="Bernard Vauquois">Bernard Vauquois</a></li>
<li><a href="Eiiti_Wada" title="Eiiti Wada">Eiiti Wada</a></li>
<li>Wegstein^</li>
<li><a href="Adriaan_van_Wijngaarden" title="Adriaan van Wijngaarden">Adriaan van Wijngaarden</a></li>
<li><a href="Mike_Woodger" title="Mike Woodger">Mike Woodger</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Simula" title="Simula">Simula</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Ole-Johan_Dahl" title="Ole-Johan Dahl">Ole-Johan Dahl</a></li>
<li><a href="Kristen_Nygaard" title="Kristen Nygaard">Kristen Nygaard</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="ALGOL_68" title="ALGOL 68">ALGOL 68</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li>Bauer^</li>
<li><a href="Susan_G._Bond" title="Susan G. Bond">Susan G. Bond</a></li>
<li>Bourne^</li>
<li><a href="Robert_Dewar" title="Robert Dewar">Robert Dewar</a></li>
<li>Dijkstra^</li>
<li><a href="https://de.wikipedia.org/wiki/Gerhard_Goos" class="extiw external" title="de:Gerhard Goos">Gerhard Goos</a></li>
<li><a href="Michael_Guy" title="Michael Guy">Michael Guy</a></li>
<li>Hoare^</li>
<li><a href="Cornelis_H._A._Koster" title="Cornelis H. A. Koster">Cornelis H. A. Koster</a></li>
<li><a href="Peter_Landin" title="Peter Landin">Peter Landin</a></li>
<li><a href="Charles_H._Lindsey" title="Charles H. Lindsey">Charles H. Lindsey</a></li>
<li><a href="Barry_J._Mailloux" title="Barry J. Mailloux">Barry J. Mailloux</a></li>
<li>McCarthy^</li>
<li><a href="Lambert_Meertens" title="Lambert Meertens">Lambert Meertens</a></li>
<li>Naur^</li>
<li>Peck^</li>
<li><a href="Willem_van_der_Poel" title="Willem van der Poel">Willem van der Poel</a></li>
<li>Randell^</li>
<li><a href="Douglas_T._Ross" title="Douglas T. Ross">Douglas T. Ross</a></li>
<li>Samelson^</li>
<li><a href="Michel_Sintzoff" title="Michel Sintzoff">Michel Sintzoff</a></li>
<li>van Wijngaarden^</li>
<li><a href="Niklaus_Wirth" title="Niklaus Wirth">Niklaus Wirth</a></li>
<li>Woodger^</li>
<li><a href="Philip_Woodward" title="Philip Woodward">Philip Woodward</a></li>
<li><a href="Nobuo_Yoneda" title="Nobuo Yoneda">Nobuo Yoneda</a></li></ul>
</div></td></tr></tbody></table><div>
<ul><li><a href="Hal_Abelson" title="Hal Abelson">Hal Abelson</a></li>
<li><a href="John_Barnes_(computer_scientist)" title="John Barnes (computer scientist)">John Barnes</a></li>
<li><a href="Tony_Brooker" title="Tony Brooker">Tony Brooker</a></li>
<li><a href="Ron_Morrison" title="Ron Morrison">Ron Morrison</a></li>
<li><a href="Peter_O'Hearn" title="Peter O'Hearn">Peter O'Hearn</a></li>
<li><a href="John_C._Reynolds" title="John C. Reynolds">John C. Reynolds</a></li></ul></div></td></tr></tbody></table><div>
<ul><li><i><a href="ALGOL_Bulletin" title="ALGOL Bulletin">ALGOL Bulletin</a></i></li></ul></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Comparison</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<li><a href="ALGOL_58#ALGOL_58's_influence_on_ALGOL_60" title="ALGOL 58">ALGOL 58 influence on ALGOL 60</a></li>
<li><a href="ALGOL_68#Comparisons_with_other_languages" title="ALGOL 68">ALGOL 68 to other languages</a></li>
</div></td></tr><tr><td class="navbox-abovebelow" colspan="2"><div>
<ul><li><b>^ = full name and link in prior ALGOL version above</b><br><span class="noviewer" typeof="mw:File"><span title="Category"></span></span> <b>Category: ALGOL</b> <span class="noviewer" typeof="mw:File"><span title="Category"></span></span> <b>Category: ALGOL 60</b></li></ul>
</div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2023-05-31" href="https://en.wikipedia.org/wiki/?title=ALGOL_68-R&oldid=1157847808">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>